例子和参考
本书强调的是程序的组织,而不是算法的书写。因此,我完全避免了巧妙的或难以理解的例子。一个平凡的程序往往更适于用来展示语言定义的某一个方面,或者程序结构中的某一论点。例如,我可能在某个地方采用Shell排序,而在实际代码中用快速排序则更好一些。我也经常把用更合适的算法重新实现作为一道练习题。在实际代码中,调用一个库函数也常比使用在这里展示语言特征的代码更值得称道。
教科书上的例子必然会给人有关软件开发的一种经过包装的观点。由于小例子的清晰性和简单性,由规模而引起的复杂性消失了。依我看,没有什么东西能够代替去写一些实际大小的程序,只有那样才能真正感受程序设计和程序设计语言究竟是什么。这本书将集中关注语言特征,关注那些支持组合出各种程序的基本技术,以及有关组合的规则。
有关示例的选择反映了我在编译器、基础库和模拟方面的研究背景。这些例子都是在真实代码中能找到的内容的简化版本。这种简化是必需的,只有这样才能保证语言特征和设计观点不会被繁琐细节所淹没。不存在没有真实背景的“灵巧”示例。在任何地方,只要可能,我就把那一些实例移交给附录C,在那里的例子中总用变量x和y,类型名总是A和B,函数总是f()和g()。
在所有代码示例中,标识符用的是比例宽度的字体。例如,
#include <iostream>
int main()
{
std::cout << "Hello, new world!\n";
}
初看起来这种表示风格好像“不大自然”,因为程序员已经习惯于采用等宽字体的代码。但是,一般的认识是,比例宽度的字体在表现正文方面优于等宽字体。采用比例宽度字体也使我的代码里更少出现非逻辑的断行现象。进一步说,我的实验经验说明,大部分人经过一小段时间后就会觉得这种风格更容易读。
只要有可能,C++语言和库特征都在将使用它们的环境中介绍,而不是在手册中以干巴巴的方式介绍。这里所描述的语言特征及其细节程度,也反映了我对于有效使用C++的需要的认识。与此伴生的另一本书,《The Annotated C++ Language Standard》(《带标注的C++语言标准》)将由Andrew Koenig和我合著,那是这个语言的一个完整定义,并附加一些注释,使之更容易理解。逻辑上说还应该有另一本伴生的书,《The Annotated C++ Standard Library(带标注的C++标准库》)。但是,由于时间和写作能力的限制,我无法允诺去完成这件事情。
与此书伴生的其他书籍:
《The Annotated C++ Language Standard》(《带标注的C++语言标准》)
《The Annotated C++ Standard Library》 (带标注的C++标准库)
🔚